package com.school.service;

import com.school.entity.User;
import java.util.List;
import java.util.Optional;

public interface UserService {
    /**
     * 根据用户名查找用户
     */
    Optional<User> findByUsername(String username);

    /**
     * 根据学号查找用户
     */
    Optional<User> findByStudentId(String studentId);

    /**
     * 保存用户（新增或更新）
     */
    User save(User user);

    /**
     * 检查密码是否正确
     */
    boolean checkPassword(User user, String rawPassword);

    /**
     * 更新用户密码
     */
    void updatePassword(Long userId, String newPassword);

    /**
     * 重置用户密码为默认密码（与用户名相同）
     */
    void resetPassword(Long userId);

    /**
     * 查询所有用户
     */
    List<User> findAll();

    /**
     * 根据角色查询用户
     */
    List<User> findByRole(String role);

    /**
     * 根据角色和用户名/姓名关键字查询用户
     */
    List<User> findByRoleAndKeyword(String role, String keyword);

    /**
     * 根据角色和班级ID查询用户
     */
    List<User> findByRoleAndClassId(String role, Integer classId);

    /**
     * 根据ID查询用户
     */
    Optional<User> findById(Long id);

    /**
     * 删除用户
     */
    void deleteById(Long id);

    /**
     * 根据用户名删除用户
     */
    void deleteByUsername(String username);
}
